import java.util.Deque;
import java.util.LinkedList;
import java.util.Stack;

import static jdk.nashorn.internal.runtime.JSType.isNumber;

class Solution {
    public int evalRPN(String[] tokens) {
//        Deque<Integer> stack = new LinkedList<Integer>();
//        int n = tokens.length;
//        for (int i = 0; i < n; i++) {
//            String token = tokens[i];
//            if (isNumber(token)) {
//                stack.push(Integer.parseInt(token));
//            } else {
//                int num2 = stack.pop();
//                int num1 = stack.pop();
//                switch (token) {
//                    case "+":
//                        stack.push(num1 + num2);
//                        break;
//                    case "-":
//                        stack.push(num1 - num2);
//                        break;
//                    case "*":
//                        stack.push(num1 * num2);
//                        break;
//                    case "/":
//                        stack.push(num1 / num2);
//                        break;
//                    default:
//                }
//            }
//        }
//        return stack.pop();
//    }
//
//    public boolean isNumber(String token) {
//        return !("+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token));
//    }
        //用一个栈存储字符串内容
//         Deque<Integer> stack = new LinkedList<>();
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < tokens.length; i++) {
            String token = tokens[i];   //未知类型
            if(isNumber(token)){
                stack.push(Integer.parseInt(token));
            }else {
                //取出两个元素，第一个右操作数，第二个左操作数
                int num2 = stack.pop();
                int num1 = stack.pop();
                switch (token){
                    case "+":
                        stack.push(num1 + num2);
                        break;
                    case "-":
                        stack.push(num1 - num2);
                        break;
                    case "*":
                        stack.push(num1 * num2);
                        break;
                    case "/":
                        stack.push(num1 / num2);
                        break;
                    default:
                    }
                }
            }
            return stack.pop();
    }
        public boolean isNumber(String token) {
        return !("+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token));
    }
}